<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">

		</style>
	</head>

	<body>
	</body>
	<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
	<script type="text/javascript">
		function a(data) {
			return new Promise(function(resolve, reject) {
				console.log("我是从上一个回调函数里传过来的数据", data);
				$.ajax({
					type: 'post',
					dataType: 'jsonp',
					url: 'http://api.money.126.net/data/feed/0000001,1399001', //jsonp跨域调用上证与深证的股票指数
					data: {},
					success: function(res) {
						console.log(res);
						resolve(res);
					},
					error: function(res) {
						console.log("Error:");
						console.log(res);
						reject(res);
					}
				})
			});
		}

		function b(data) {
			return new Promise(function(resolve, reject) {
				console.log("我是从上一个回调函数里传过来的数据", data);
				$.ajax({
					type: 'post',
					dataType: 'jsonp',
					url: 'https://api.douban.com/v2/movie/top250', //跨域调用豆top250的电影
					success: function(res) {
						console.log(res);
						resolve(res);
					},
					error: function(res) {
						console.log("Error:");
						console.log(res);
						reject(res)
					}
				})
			});
		}
//		1.按照顺序执行a,b,a,b
//		a().then(b).then(a).then(b).catch(function(a) {
//			console.log("final Error:", a)
//		});
//		2.promise.all 同时执行a(),b(),并在他们都完成后执行then
//		Promise.all([a(), b()]).then(function(results) {
//			console.log(results); // 获得一个Array: ['P1', 'P2']
//		});
//		3.promise.race 这种情况下,多个异步任务是为了容错。比如，分别发两个不同的 ajax 请求读取用户的个人信息，只需要获得先返回的结果即可，
//		由于 p1 执行较快，Promise 的 then() 将获得结果 'P1' 。 p2 仍在继续执行，但执行结果将被丢弃。
//		a,b同时执行,由于a执行较快,promise得then()将获得a的结果,b仍在继续,但是执行结果将被丢弃
		Promise.race([a(), b()]).then(function(results) {
			console.log(results); // 获得a的结果，
		});
		
		
	</script>

</html>